home *** CD-ROM | disk | FTP | other *** search
/ Champak 62 / Volume 62 - JOGO DISK .iso / Games / penguin_dinner.swf / scripts / __Packages / com / gskinner / events / GDispatcher.as
Text File  |  2008-03-17  |  4KB  |  127 lines

  1. class com.gskinner.events.GDispatcher
  2. {
  3.    static var _instance = undefined;
  4.    function GDispatcher()
  5.    {
  6.    }
  7.    static function initialize(p_obj)
  8.    {
  9.       if(com.gskinner.events.GDispatcher._instance == undefined)
  10.       {
  11.          com.gskinner.events.GDispatcher._instance = new com.gskinner.events.GDispatcher();
  12.       }
  13.       p_obj.dispatchEvent = com.gskinner.events.GDispatcher._instance.dispatchEvent;
  14.       p_obj.eventListenerExists = com.gskinner.events.GDispatcher._instance.eventListenerExists;
  15.       p_obj.addEventListener = com.gskinner.events.GDispatcher._instance.addEventListener;
  16.       p_obj.removeEventListener = com.gskinner.events.GDispatcher._instance.removeEventListener;
  17.       p_obj.removeAllEventListeners = com.gskinner.events.GDispatcher._instance.removeAllEventListeners;
  18.    }
  19.    static function _indexOfListener(p_listeners, p_obj, p_function)
  20.    {
  21.       var _loc3_ = p_listeners.length;
  22.       var _loc2_ = -1;
  23.       while((_loc2_ = _loc2_ + 1) < _loc3_)
  24.       {
  25.          var _loc1_ = p_listeners[_loc2_];
  26.          if(_loc1_.o == p_obj && _loc1_.f == p_function)
  27.          {
  28.             return _loc2_;
  29.          }
  30.       }
  31.       return -1;
  32.    }
  33.    static function _dispatchEvent(p_dispatchObj, p_listeners, p_eventObj)
  34.    {
  35.       var _loc5_ = undefined;
  36.       for(_loc5_ in p_listeners)
  37.       {
  38.          var _loc1_ = p_listeners[_loc5_].o;
  39.          var _loc3_ = typeof _loc1_;
  40.          var _loc2_ = p_listeners[_loc5_].f;
  41.          if(_loc3_ == "object" || _loc3_ == "movieclip")
  42.          {
  43.             if(_loc1_.handleEvent != undefined && _loc2_ == undefined)
  44.             {
  45.                _loc1_.handleEvent(p_eventObj);
  46.             }
  47.             if(_loc2_ == undefined)
  48.             {
  49.                _loc2_ = p_eventObj.type;
  50.             }
  51.             _loc1_._loc2_(p_eventObj);
  52.          }
  53.          else
  54.          {
  55.             _loc1_.apply(p_dispatchObj,[p_eventObj]);
  56.          }
  57.       }
  58.    }
  59.    function dispatchEvent(p_eventObj)
  60.    {
  61.       if(p_eventObj.type == "ALL")
  62.       {
  63.          return undefined;
  64.       }
  65.       if(p_eventObj.target == undefined)
  66.       {
  67.          p_eventObj.target = this;
  68.       }
  69.       this[p_eventObj.type + "Handler"](p_eventObj);
  70.       var _loc3_ = this.gDispatcher_listeners[p_eventObj.type];
  71.       if(_loc3_ != undefined)
  72.       {
  73.          com.gskinner.events.GDispatcher._dispatchEvent(this,_loc3_,p_eventObj);
  74.       }
  75.       _loc3_ = this.gDispatcher_listeners.ALL;
  76.       if(_loc3_ != undefined)
  77.       {
  78.          com.gskinner.events.GDispatcher._dispatchEvent(this,_loc3_,p_eventObj);
  79.       }
  80.    }
  81.    function eventListenerExists(p_event, p_obj, p_function)
  82.    {
  83.       return com.gskinner.events.GDispatcher._indexOfListener(this.gDispatcher_listeners[p_event],p_obj,p_function) != -1;
  84.    }
  85.    function addEventListener(p_event, p_obj, p_function)
  86.    {
  87.       if(this.gDispatcher_listeners == undefined)
  88.       {
  89.          this.gDispatcher_listeners = {};
  90.          _global.ASSetPropFlags(this,this.gDispatcher_listeners,1);
  91.       }
  92.       var _loc3_ = this.gDispatcher_listeners[p_event];
  93.       if(_loc3_ == undefined)
  94.       {
  95.          this.gDispatcher_listeners[p_event] = _loc3_ = [];
  96.       }
  97.       if(com.gskinner.events.GDispatcher._indexOfListener(_loc3_,p_obj,p_function) == -1)
  98.       {
  99.          _loc3_.push({o:p_obj,f:p_function});
  100.       }
  101.    }
  102.    function removeEventListener(p_event, p_obj, p_function)
  103.    {
  104.       var _loc2_ = this.gDispatcher_listeners[p_event];
  105.       if(_loc2_ == undefined)
  106.       {
  107.          return undefined;
  108.       }
  109.       var _loc3_ = com.gskinner.events.GDispatcher._indexOfListener(_loc2_,p_obj,p_function);
  110.       if(_loc3_ != -1)
  111.       {
  112.          _loc2_.splice(_loc3_,1);
  113.       }
  114.    }
  115.    function removeAllEventListeners(p_event)
  116.    {
  117.       if(p_event == undefined)
  118.       {
  119.          delete this.gDispatcher_listeners;
  120.       }
  121.       else
  122.       {
  123.          delete this.gDispatcher_listeners[p_event];
  124.       }
  125.    }
  126. }
  127.